Puji syukur ke hadirat Tuhan Yang Maha Esa atas tersusunnya Modul Ajar Pemrograman Web dengan PHP ini. Modul ini dirancang sebagai panduan komprehensif untuk mempelajari PHP mulai dari konsep dasar hingga aplikasi praktis.
PHP (Hypertext Preprocessor) merupakan bahasa pemrograman server-side yang paling populer digunakan dalam pengembangan web. Dengan menguasai PHP, peserta didik akan mampu membangun aplikasi web dinamis dan interaktif.
Modul ini disusun secara sistematis dengan pendekatan pembelajaran berbasis praktikum (hands-on learning). Setiap bab dilengkapi dengan:
Kami berharap modul ini dapat membantu peserta didik dalam menguasai pemrograman PHP. Kritik dan saran yang membangun sangat kami harapkan untuk perbaikan di masa mendatang.
Tangerang, Januari 2026
Tim Penyusun
PHP (PHP: Hypertext Preprocessor) adalah bahasa scripting server-side yang dirancang khusus untuk pengembangan web. PHP pertama kali dikembangkan oleh Rasmus Lerdorf pada tahun 1994 dan telah berkembang menjadi salah satu bahasa pemrograman web paling populer di dunia.
PHP bekerja pada arsitektur client-server dengan alur sebagai berikut:
| Aspek | Kelebihan |
|---|---|
| Gratis | PHP adalah open source, dapat digunakan tanpa biaya lisensi |
| Cross-platform | Berjalan di Windows, Linux, Mac OS, dan berbagai platform lainnya |
| Dukungan Database | Mendukung berbagai database (MySQL, PostgreSQL, Oracle, dll) |
| Komunitas Besar | Dokumentasi lengkap dan komunitas aktif |
| Mudah Dipelajari | Syntax sederhana dan mudah dipahami |
Tujuan: Membuat dan menjalankan program PHP sederhana
<?php // Program PHP pertama echo "<h1>Selamat Datang di PHP!</h1>"; echo "<p>Hari ini: " . date('d-m-Y H:i:s') . "</p>"; $nama = "PHP"; $versi = 8.0; echo "<p>Anda sedang belajar $nama versi $versi</p>"; ?>
Hari ini: 15-01-2024 14:30:25
Anda sedang belajar PHP versi 8
PHP adalah bahasa pemrograman server-side, artinya kode PHP dieksekusi di server, bukan di browser client. Hasil eksekusi dikirim ke browser dalam bentuk HTML murni.
PHP dapat diintegrasikan dengan HTML dalam beberapa cara:
<!DOCTYPE html>
<html>
<head>
<title><?php echo "Judul Halaman"; ?></title>
</head>
<body>
<h1><?php echo "Selamat Datang"; ?></h1>
<p>Sekarang jam <?php echo date('H:i:s'); ?></p>
</body>
</html>
<?php echo "<!DOCTYPE html>"; echo "<html>"; echo "<head><title>Contoh</title></head>"; echo "<body>"; echo "<h1>Halo Dunia</h1>"; echo "</body>"; echo "</html>"; ?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Halaman Dinamis dengan PHP</title>
<style>
body { font-family: Arial; margin: 40px; }
.header { background: #3498db; color: white; padding: 20px; }
.content { padding: 20px; background: #f4f4f4; }
.footer { background: #333; color: white; padding: 10px; text-align: center; }
</style>
</head>
<body>
<div class="header">
<h1><?php echo "Sistem Informasi Akademik"; ?></h1>
<p>Tanggal: <?php echo date('d F Y'); ?></p>
</div>
<div class="content">
<?php
$nama = "Budi Santoso";
$nim = "2024001";
$prodi = "Teknik Informatika";
$semester = 3;
$ipk = 3.75;
?>
<h2>Data Mahasiswa</h2>
<table border="1" cellpadding="10">
<tr><td>Nama</td><td><?php echo $nama; ?></td></tr>
<tr><td>NIM</td><td><?php echo $nim; ?></td></tr>
<tr><td>Program Studi</td><td><?php echo $prodi; ?></td></tr>
<tr><td>Semester</td><td><?php echo $semester; ?></td></tr>
<tr><td>IPK</td><td><?php echo $ipk; ?></td></tr>
</table>
<?php
if ($ipk >= 3.5) {
echo "<p style='color:green'>โ
Predikat: Cumlaude</p>";
} elseif ($ipk >= 3.0) {
echo "<p style='color:blue'>๐ Predikat: Sangat Memuaskan</p>";
} else {
echo "<p style='color:orange'>๐ Predikat: Memuaskan</p>";
}
?>
</div>
<div class="footer">
<p>© <?php echo date('Y'); ?> - Universitas PHP</p>
</div>
</body>
</html>
Gunakan kombinasi PHP dan HTML untuk membuat halaman yang dinamis. PHP menangani logika dan data, sementara HTML menangani tampilan.
Untuk menjalankan PHP, Anda membutuhkan web server dan database. Solusi terintegrasi yang paling populer:
| Paket | Komponen | Sistem Operasi |
|---|---|---|
| XAMPP | Apache + MySQL + PHP + Perl | Windows, Linux, Mac |
| WAMP | Apache + MySQL + PHP | Windows |
| MAMP | Apache + MySQL + PHP | Mac, Windows |
| LAMP | Linux + Apache + MySQL + PHP | Linux |
<?php // File: test.php echo "<h2>PHP berhasil terinstal!</h2>"; phpinfo(); // Menampilkan informasi konfigurasi PHP ?>
<?php // Kode PHP ditulis di sini echo "Hello World"; ?>
<? echo "Hello World"; ?>
<?= "Hello World" ?> // Sama dengan <?php echo "Hello World"; ?>
<!DOCTYPE html>
<html>
<head>
<title>Demo Syntax PHP</title>
</head>
<body>
<!-- Cara 1: PHP murni -->
<?php
$nama = "Budi";
echo "<h3>Halo $nama!</h3>";
?>
<!-- Cara 2: PHP dalam HTML -->
<h4>Sekarang jam <?php echo date('H:i'); ?> WIB</h4>
<!-- Cara 3: Shortcut echo -->
<p>Hari ini: <?= date('d-m-Y') ?></p>
<!-- Cara 4: Multiple statements -->
<?php
$x = 5;
$y = 10;
$z = $x + $y;
echo "<p>$x + $y = $z</p>";
?>
<!-- Cara 5: PHP dan HTML bercampur -->
<?php if (date('H') < 12): ?>
<p style="color: blue">Selamat Pagi!</p>
<?php else: ?>
<p style="color: orange">Selamat Siang!</p>
<?php endif; ?>
</body>
</html>
Gunakan tag <?php ?> untuk kompatibilitas maksimum. Short tag (<? ?>) mungkin tidak aktif di beberapa server.
| Jenis | Syntax | Contoh |
|---|---|---|
| Single-line | // atau # | // Ini komentar satu baris |
| Multi-line | /* ... */ | /* Komentar |
| DocBlock | /** ... */ | /** |
<?php /** * File: kalkulator.php * Author: Tim Pengembang * Deskripsi: Program kalkulator sederhana */ // Mendefinisikan variable $angka1 = 10; # ini juga komentar $angka2 = 5; /* * Blok komentar untuk operasi matematika * Menjelaskan setiap operasi yang dilakukan */ $tambah = $angka1 + $angka2; $kurang = $angka1 - $angka2; $kali = $angka1 * $angka2; $bagi = $angka1 / $angka2; // Menampilkan hasil echo "<h3>Hasil Perhitungan</h3>"; echo "<ul>"; echo "<li>$angka1 + $angka2 = $tambah</li>"; echo "<li>$angka1 - $angka2 = $kurang</li>"; echo "<li>$angka1 * $angka2 = $kali</li>"; echo "<li>$angka1 / $angka2 = $bagi</li>"; echo "</ul>"; ?>
Variable adalah tempat menyimpan data di memori. Di PHP, variable diawali dengan tanda $.
$nama $_umur $alamat_rumah $namaLengkap $var123
$123nama // Diawali angka $nama-depan // Mengandung tanda hubung $nama lengkap // Mengandung spasi
PHP mendukung konsep "variable variables" dimana nama variable bisa dinamis.
$nama = "Budi"; $$nama = "Santoso"; // Membuat variable $Budi echo $Budi; // Output: Santoso
<?php // Deklarasi berbagai tipe variable $nama = "John Doe"; $umur = 25; $tinggi = 175.5; $menikah = false; $hobi = array("Membaca", "Olahraga", "Traveling"); // Menampilkan variable echo "<h3>Data Diri</h3>"; echo "<table border='1' cellpadding='10'>"; echo "<tr><td>Nama</td><td>$nama</td></tr>"; echo "<tr><td>Umur</td><td>$umur tahun</td></tr>"; echo "<tr><td>Tinggi</td><td>$tinggi cm</td></tr>"; echo "<tr><td>Status</td><td>" . ($menikah ? "Menikah" : "Belum Menikah") . "</td></tr>"; echo "<tr><td>Hobi</td><td>" . implode(", ", $hobi) . "</td></tr>"; echo "</table>"; // Demonstrasi variable variables $hewan = "kucing"; $$hewan = "persia"; // Membuat variable $kucing echo "<p>Jenis kucing: " . $kucing . "</p>"; // Scope variable $globalVar = "Saya variable global"; function testScope() { $localVar = "Saya variable lokal"; // Mengakses variable global global $globalVar; echo "<p>Dalam fungsi: $localVar</p>"; echo "<p>Dalam fungsi (global): $globalVar</p>"; } testScope(); // echo $localVar; // Error: undefined variable ?>
| Fitur | echo | |
|---|---|---|
| Kecepatan | Lebih cepat | Lebih lambat |
| Return value | Tidak ada | Return 1 |
| Multiple parameter | Bisa | Tidak bisa |
| Penggunaan | echo "teks"; | print "teks"; |
<?php // Echo - bisa multiple parameter echo "<h3>Demonstrasi Echo</h3>"; echo "Halo ", "dunia", "!<br>"; // Echo dengan kutip ganda (memproses variable) $nama = "Budi"; echo "Nama saya $nama<br>"; // Echo dengan kutip tunggal (tidak memproses variable) echo 'Nama saya $nama<br>'; // Echo dengan concatenation echo "Nama saya " . $nama . "<br>"; // Print - hanya satu parameter print "<h3>Demonstrasi Print</h3>"; print "Ini menggunakan print<br>"; // Print bisa digunakan dalam ekspresi $hasil = print "Print mengembalikan nilai<br>"; echo "Nilai return print: " . $hasil . "<br>"; // Echo dengan HTML echo "<div style='border:1px solid blue; padding:10px;'>"; echo "<p style='color:red'>Ini teks merah dalam div</p>"; echo "</div>"; // Print dengan HTML print "<ul>"; print "<li>Item 1</li>"; print "<li>Item 2</li>"; print "</ul>"; // Shorthand echo (hanya dalam PHP tags) ?> <p>Shorthand echo: <?= "Halo dari shorthand" ?></p> <?php // Output array $array = ["apel", "jeruk", "mangga"]; echo "Isi array: " . implode(", ", $array) . "<br>"; print_r($array); // Fungsi khusus untuk debugging ?>
<?php // String $string1 = "Ini string dengan kutip ganda"; $string2 = 'Ini string dengan kutip tunggal'; $string3 = "Bisa menyisipkan variable $string1"; // Integer $integer1 = 42; $integer2 = -17; $integer3 = 0xFF; // Hexadecimal (255) $integer4 = 0b1010; // Binary (10) // Float $float1 = 3.14; $float2 = 1.2e3; // 1200 $float3 = 7E-10; // 0.0000000007 // Boolean $benar = true; $salah = false; // Array $array1 = [1, 2, 3, 4, 5]; $array2 = array("merah", "hijau", "biru"); $array3 = [ "nama" => "Budi", "umur" => 25, "aktif" => true ]; // NULL $nullVar = null; // Menampilkan tipe data echo "<h3>Demo Tipe Data PHP</h3>"; function displayVar($var, $nama) { echo "<b>$nama</b><br>"; echo "Nilai: " . (is_null($var) ? "NULL" : $var) . "<br>"; echo "Tipe: " . gettype($var) . "<br>"; // Cek spesifik if (is_int($var)) echo "โ Adalah integer<br>"; if (is_string($var)) echo "โ Adalah string<br>"; if (is_float($var)) echo "โ Adalah float<br>"; if (is_bool($var)) echo "โ Adalah boolean<br>"; if (is_array($var)) echo "โ Adalah array<br>"; if (is_null($var)) echo "โ Adalah NULL<br>"; echo "<hr>"; } displayVar($string1, "String"); displayVar($integer1, "Integer"); displayVar($float1, "Float"); displayVar($benar, "Boolean"); displayVar($array1, "Array"); displayVar($nullVar, "NULL"); // Type juggling echo "<h4>Type Juggling (Konversi Otomatis)</h4>"; $angka = "10"; $hasil = $angka + 5; // String "10" dikonversi ke integer echo "10 + 5 = $hasil<br>"; $total = 10 . " ekor kucing"; // Integer 10 dikonversi ke string echo $total . "<br>"; ?>
| Fungsi | Deskripsi | Contoh |
|---|---|---|
| strlen() | Panjang string | strlen("Hello") โ 5 |
| str_word_count() | Jumlah kata | str_word_count("Hello World") โ 2 |
| strrev() | Membalik string | strrev("Hello") โ "olleH" |
| strpos() | Posisi teks | strpos("Hello World", "World") โ 6 |
| str_replace() | Mengganti teks | str_replace("World", "PHP", "Hello World") |
<?php $teks = "Belajar PHP sangat menyenangkan di tahun 2024!"; echo "<h3>Manipulasi String</h3>"; echo "Teks asli: $teks<br><br>"; // Informasi dasar echo "Panjang string: " . strlen($teks) . " karakter<br>"; echo "Jumlah kata: " . str_word_count($teks) . " kata<br>"; echo "Jumlah kata (dengan angka): " . str_word_count($teks, 0, '0123456789') . "<br>"; // Modifikasi string echo "<h4>Modifikasi String</h4>"; echo "Huruf besar: " . strtoupper($teks) . "<br>"; echo "Huruf kecil: " . strtolower($teks) . "<br>"; echo "Huruf pertama kapital: " . ucfirst($teks) . "<br>"; echo "Setiap kata kapital: " . ucwords($teks) . "<br>"; echo "String dibalik: " . strrev($teks) . "<br>"; // Mencari dan mengganti echo "<h4>Pencarian dan Penggantian</h4>"; $posisi = strpos($teks, "PHP"); echo "Posisi kata 'PHP': $posisi<br>"; if (str_contains($teks, "PHP")) { echo "Teks mengandung kata 'PHP'<br>"; } if (str_starts_with($teks, "Belajar")) { echo "Teks dimulai dengan 'Belajar'<br>"; } if (str_ends_with($teks, "2024!")) { echo "Teks diakhiri dengan '2024!'<br>"; } $ganti = str_replace("PHP", "Pemrograman", $teks); echo "Setelah diganti: $ganti<br>"; // Memotong dan memformat echo "<h4>Memotong dan Memformat</h4>"; echo "10 karakter pertama: " . substr($teks, 0, 10) . "...<br>"; echo "10 karakter terakhir: ..." . substr($teks, -10) . "<br>"; echo "Karakter ke 8-15: " . substr($teks, 8, 7) . "<br>"; // Menghapus whitespace $stringDenganSpasi = " Halo "; echo "'" . $stringDenganSpasi . "' โ setelah trim: '" . trim($stringDenganSpasi) . "'<br>"; // Menggabungkan dan memisah echo "<h4>Penggabungan dan Pemisahan</h4>"; $parts = explode(" ", $teks); echo "Hasil explode: "; print_r($parts); echo "<br>"; $gabung = implode(" - ", $parts); echo "Hasil implode: $gabung<br>"; // HTML entities $htmlString = "<script>alert('xss')</script>"; echo "HTML entities: " . htmlspecialchars($htmlString) . "<br>"; // Format angka dalam string $harga = 1500000; echo "Harga: Rp " . number_format($harga, 0, ',', '.') . "<br>"; // MD5 dan SHA1 (hash) echo "MD5 dari 'password': " . md5("password") . "<br>"; echo "SHA1 dari 'password': " . sha1("password") . "<br>"; ?>
Sebagai final project, kita akan membangun aplikasi manajemen data siswa dengan fitur:
<?php /** * Aplikasi Manajemen Data Siswa * Mengintegrasikan semua konsep PHP yang telah dipelajari */ // Koneksi ke database $host = "localhost"; $user = "root"; $pass = ""; $db = "sekolah"; $conn = new mysqli($host, $user, $pass, $db); if ($conn->connect_error) { die("Koneksi gagal: " . $conn->connect_error); } // Fungsi untuk membersihkan input function cleanInput($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } // Proses CRUD if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST['tambah'])) { $nis = cleanInput($_POST['nis']); $nama = cleanInput($_POST['nama']); $kelas = cleanInput($_POST['kelas']); $alamat = cleanInput($_POST['alamat']); $sql = "INSERT INTO siswa (nis, nama, kelas, alamat) VALUES ('$nis', '$nama', '$kelas', '$alamat')"; if ($conn->query($sql) === TRUE) { echo "<script>alert('Data berhasil ditambahkan');</script>"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } } // Tampilkan data dengan pagination $limit = 10; $page = isset($_GET['page']) ? $_GET['page'] : 1; $start = ($page - 1) * $limit; $sql = "SELECT * FROM siswa ORDER BY id DESC LIMIT $start, $limit"; $result = $conn->query($sql); $total = $conn->query("SELECT COUNT(*) as total FROM siswa")->fetch_assoc()['total']; $pages = ceil($total / $limit); ?> <!DOCTYPE html> <html> <head> <title>Manajemen Data Siswa</title> <style> * { font-family: Arial; margin: 0; padding: 0; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .header { background: #2c3e50; color: white; padding: 20px; text-align: center; } .form-tambah { background: #f4f4f4; padding: 20px; margin: 20px 0; border-radius: 5px; } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 5px; } .form-group input, .form-group textarea { width: 100%; padding: 8px; border: 1px solid #ddd; } .btn { background: #3498db; color: white; padding: 10px 20px; border: none; cursor: pointer; } .btn:hover { background: #2980b9; } table { width: 100%; border-collapse: collapse; margin: 20px 0; } th { background: #2c3e50; color: white; padding: 12px; } td { padding: 10px; border: 1px solid #ddd; } tr:nth-child(even) { background: #f2f2f2; } .pagination { text-align: center; margin: 20px 0; } .pagination a { display: inline-block; padding: 8px 16px; background: #f4f4f4; margin: 0 5px; text-decoration: none; color: #333; } .pagination a.active { background: #3498db; color: white; } </style> </head> <body> <div class="header"> <h1>Sistem Informasi Data Siswa</h1> <p>Total Siswa: <?php echo $total; ?></p> </div> <div class="container"> <div class="form-tambah"> <h2>Tambah Data Siswa Baru</h2> <form method="POST" action=""> <div class="form-group"> <label>NIS:</label> <input type="text" name="nis" required> </div> <div class="form-group"> <label>Nama Lengkap:</label> <input type="text" name="nama" required> </div> <div class="form-group"> <label>Kelas:</label> <input type="text" name="kelas" required> </div> <div class="form-group"> <label>Alamat:</label> <textarea name="alamat" rows="3" required></textarea> </div> <button type="submit" name="tambah" class="btn">Tambah Data</button> </form> </div> <h2>Daftar Siswa</h2> <table> <tr> <th>ID</th> <th>NIS</th> <th>Nama</th> <th>Kelas</th> <th>Alamat</th> <th>Aksi</th> </tr> <?php if ($result->num_rows > 0): ?> <?php while($row = $result->fetch_assoc()): ?> <tr> <td><?php echo $row['id']; ?></td> <td><?php echo $row['nis']; ?></td> <td><?php echo $row['nama']; ?></td> <td><?php echo $row['kelas']; ?></td> <td><?php echo $row['alamat']; ?></td> <td> <a href="edit.php?id=<?php echo $row['id']; ?>" class="btn" style="background: #27ae60;">Edit</a> <a href="hapus.php?id=<?php echo $row['id']; ?>" class="btn" style="background: #c0392b;" onclick="return confirm('Yakin ingin menghapus?')">Hapus</a> </td> </tr> <?php endwhile; ?> <?php else: ?> <tr> <td colspan="6" style="text-align: center; padding: 20px;">Belum ada data siswa</td> </tr> <?php endif; ?> </table> <!-- Pagination --> <div class="pagination"> <?php if($page > 1): ?> <a href="?page=<?php echo $page-1; ?>">« Previous</a> <?php endif; ?> <?php for($i = 1; $i <= $pages; $i++): ?> <a href="?page=<?php echo $i; ?>" class="<?php echo ($page == $i) ? 'active' : ''; ?>"><?php echo $i; ?></a> <?php endfor; ?> <?php if($page < $pages): ?> <a href="?page=<?php echo $page+1; ?>">Next »</a> <?php endif; ?> </div> <!-- Informasi Page --> <p style="text-align: center; margin-top: 10px;"> Menampilkan halaman <?php echo $page; ?> dari <?php echo $pages; ?> halaman </p> </div> </body> </html> <?php $conn->close(); ?>
CREATE DATABASE sekolah;
USE sekolah;
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nis VARCHAR(20) NOT NULL,
nama VARCHAR(100) NOT NULL,
kelas VARCHAR(20),
alamat TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
PHP mendukung berbagai format bilangan:
| Jenis | Format | Contoh |
|---|---|---|
| Desimal | Basis 10 | 123, -456, 0 |
| Heksadesimal | 0x diikuti angka 0-9 A-F | 0xFF (255), 0x1A (26) |
| Oktal | 0 diikuti angka 0-7 | 077 (63), 0123 (83) |
| Biner | 0b diikuti 0/1 | 0b1010 (10), 0b1111 (15) |
| Float | Notasi desimal atau E | 3.14, 1.2e3 (1200) |
<?php // Deklarasi berbagai format angka $desimal = 255; $heksadesimal = 0xFF; // 255 $oktal = 0377; // 255 $biner = 0b11111111; // 255 echo "<h3>Sistem Bilangan</h3>"; echo "Desimal 255 = Heksadesimal: " . dechex(255) . "<br>"; echo "Desimal 255 = Oktal: " . decoct(255) . "<br>"; echo "Desimal 255 = Biner: " . decbin(255) . "<br>"; // Operasi matematika lanjutan echo "<h3>Operasi Matematika</h3>"; $angka = [23, 45, 67, 89, 12, 34, 56]; echo "Array: " . implode(", ", $angka) . "<br>"; echo "Nilai maksimum: " . max($angka) . "<br>"; echo "Nilai minimum: " . min($angka) . "<br>"; echo "Rata-rata: " . array_sum($angka) / count($angka) . "<br>"; // Fungsi matematika $bilangan = -25.67; echo "<h4>Fungsi Matematika</h4>"; echo "Nilai absolut dari $bilangan: " . abs($bilangan) . "<br>"; echo "Pembulatan ke atas: " . ceil($bilangan) . "<br>"; echo "Pembulatan ke bawah: " . floor($bilangan) . "<br>"; echo "Pembulatan biasa: " . round($bilangan, 1) . "<br>"; // Bilangan random echo "<h4>Bilangan Random</h4>"; echo "Random 1-10: " . rand(1, 10) . "<br>"; echo "Random lebih aman: " . random_int(1, 100) . "<br>"; // Konversi dan validasi echo "<h4>Validasi Angka</h4>"; $testAngka = ["123", "12.3", "abc", "0xFF", " 123 ", "12,3"]; foreach ($testAngka as $t) { echo "'$t' : "; if (is_numeric($t)) { echo "โ Numerik"; if (is_int($t + 0)) echo " (Integer)"; else echo " (Float)"; } else { echo "โ Bukan numerik"; } echo "<br>"; } ?>
Casting adalah proses mengubah tipe data suatu nilai ke tipe data lain.
| Operator Cast | Tujuan | Contoh |
|---|---|---|
| (int), (integer) | Ke integer | (int) "123" โ 123 |
| (float), (double), (real) | Ke float | (float) "3.14" โ 3.14 |
| (string) | Ke string | (string) 123 โ "123" |
| (bool), (boolean) | Ke boolean | (bool) 0 โ false |
| (array) | Ke array | (array) "halo" โ ["halo"] |
| (object) | Ke object | (object) ["a" => 1] |
<?php // Data sample $stringAngka = "123.45"; $stringBukanAngka = "123abc"; $angkaInteger = 100; $angkaFloat = 99.99; $booleanTrue = true; $booleanFalse = false; $arrayData = [1, 2, 3]; $nullValue = null; echo "<h3>Type Casting Demonstration</h3>"; // Fungsi untuk menampilkan hasil casting function showCast($original, $type) { $originalType = gettype($original); $originalValue = is_bool($original) ? ($original ? 'true' : 'false') : $original; echo "<b>Original:</b> $originalValue ($originalType)<br>"; switch($type) { case 'int': $result = (int)$original; break; case 'float': $result = (float)$original; break; case 'string': $result = (string)$original; break; case 'bool': $result = (bool)$original; $result = $result ? 'true' : 'false'; break; case 'array': $result = (array)$original; $result = '[' . implode(', ', $result) . ']'; break; } $resultType = gettype($type == 'bool' ? ($result == 'true') : $result); echo "<b>Hasil casting ke $type:</b> $result ($resultType)<br><br>"; } echo "<h4>Casting String ke Integer</h4>"; showCast($stringAngka, 'int'); showCast($stringBukanAngka, 'int'); echo "<h4>Casting ke Float</h4>"; showCast($stringAngka, 'float'); showCast($angkaInteger, 'float'); echo "<h4>Casting ke Boolean</h4>"; showCast(0, 'bool'); showCast(1, 'bool'); showCast("", 'bool'); showCast("0", 'bool'); showCast("hello", 'bool'); showCast(null, 'bool'); showCast([], 'bool'); echo "<h4>Casting ke String</h4>"; showCast($angkaFloat, 'string'); showCast($booleanTrue, 'string'); showCast($nullValue, 'string'); echo "<h4>Casting ke Array</h4>"; showCast($angkaInteger, 'array'); showCast($stringAngka, 'array'); // Settype (mengubah tipe secara permanen) echo "<h4>Menggunakan settype()</h4>"; $var = "100.5"; echo "Sebelum settype: " . gettype($var) . " nilai: $var<br>"; settype($var, "int"); echo "Setelah settype ke int: " . gettype($var) . " nilai: $var<br>"; // Implicit casting (type juggling) echo "<h4>Implicit Casting (Type Juggling)</h4>"; $jumlah = "10" + 5; // String "10" jadi integer echo '"10" + 5 = ' . $jumlah . ' (' . gettype($jumlah) . ')<br>'; $gabung = "Angka: " . 100; // Integer 100 jadi string echo $gabung . ' (' . gettype($gabung) . ')<br>'; $kali = "2.5" * 3; // String "2.5" jadi float echo '"2.5" * 3 = ' . $kali . ' (' . gettype($kali) . ')<br>'; ?>
PHP menyediakan berbagai fungsi matematika bawaan.
| Fungsi | Deskripsi | Contoh |
|---|---|---|
| abs() | Nilai absolut | abs(-5) โ 5 |
| round() | Pembulatan | round(3.7) โ 4 |
| ceil() | Pembulatan ke atas | ceil(3.1) โ 4 |
| floor() | Pembulatan ke bawah | floor(3.9) โ 3 |
| sqrt() | Akar kuadrat | sqrt(25) โ 5 |
| pow() | Pangkat | pow(2,3) โ 8 |
| min() | Nilai terkecil | min(5,2,8) โ 2 |
| max() | Nilai terbesar | max(5,2,8) โ 8 |
<?php // Konstanta matematika echo "<h3>Konstanta Matematika</h3>"; echo "Pi (ฯ): " . pi() . "<br>"; echo "e (bilangan natural): " . M_E . "<br>"; echo "log10(e): " . M_LOG10E . "<br>"; echo "โ2: " . M_SQRT2 . "<br>"; echo "โฯ: " . M_SQRTPI . "<br>"; // Kalkulator ilmiah class ScientificCalculator { public function tambah($a, $b) { return $a + $b; } public function kurang($a, $b) { return $a - $b; } public function kali($a, $b) { return $a * $b; } public function bagi($a, $b) { return $b != 0 ? $a / $b : "Error: division by zero"; } public function pangkat($a, $b) { return pow($a, $b); } public function akar($a) { return sqrt($a); } public function log10($a) { return log10($a); } public function logNatural($a) { return log($a); } public function sin($a) { return sin(deg2rad($a)); } public function cos($a) { return cos(deg2rad($a)); } public function tan($a) { return tan(deg2rad($a)); } public function faktorial($n) { if ($n <= 1) return 1; return $n * $this->faktorial($n - 1); } public function kombinasi($n, $r) { return $this->faktorial($n) / ($this->faktorial($r) * $this->faktorial($n - $r)); } public function permutasi($n, $r) { return $this->faktorial($n) / $this->faktorial($n - $r); } } $calc = new ScientificCalculator(); echo "<h3>Demo Kalkulator Ilmiah</h3>"; echo "2 + 3 = " . $calc->tambah(2, 3) . "<br>"; echo "10 - 4 = " . $calc->kurang(10, 4) . "<br>"; echo "6 ร 7 = " . $calc->kali(6, 7) . "<br>"; echo "15 รท 3 = " . $calc->bagi(15, 3) . "<br>"; echo "2 pangkat 8 = " . $calc->pangkat(2, 8) . "<br>"; echo "โ144 = " . $calc->akar(144) . "<br>"; echo "log10(1000) = " . $calc->log10(1000) . "<br>"; echo "ln(eยฒ) = " . $calc->logNatural(exp(2)) . "<br>"; echo "sin(30ยฐ) = " . $calc->sin(30) . "<br>"; echo "cos(60ยฐ) = " . $calc->cos(60) . "<br>"; echo "tan(45ยฐ) = " . $calc->tan(45) . "<br>"; echo "5! (faktorial) = " . $calc->faktorial(5) . "<br>"; echo "C(10,3) (kombinasi) = " . $calc->kombinasi(10, 3) . "<br>"; echo "P(10,3) (permutasi) = " . $calc->permutasi(10, 3) . "<br>"; // Trigonometri echo "<h4>Tabel Trigonometri</h4>"; echo "<table border='1' cellpadding='8'>"; echo "<tr><th>Sudut (ยฐ)</th><th>sin</th><th>cos</th><th>tan</th></tr>"; for ($sudut = 0; $sudut <= 360; $sudut += 30) { echo "<tr>"; echo "<td>$sudutยฐ</td>"; echo "<td>" . round(sin(deg2rad($sudut)), 4) . "</td>"; echo "<td>" . round(cos(deg2rad($sudut)), 4) . "</td>"; echo "<td>" . (cos(deg2rad($sudut)) == 0 ? "โ" : round(tan(deg2rad($sudut)), 4)) . "</td>"; echo "</tr>"; } echo "</table>"; // Statistik $data = [12, 15, 18, 20, 22, 25, 28, 30, 32, 35]; echo "<h4>Analisis Statistik</h4>"; echo "Data: " . implode(", ", $data) . "<br>"; echo "Mean (rata-rata): " . array_sum($data) / count($data) . "<br>"; echo "Median: " . (($data[4] + $data[5]) / 2) . "<br>"; echo "Range: " . (max($data) - min($data)) . "<br>"; ?>
Konstanta adalah identifier untuk nilai sederhana yang tidak dapat berubah selama script berjalan.
| Aspek | Variable | Konstanta |
|---|---|---|
| Prefix | $ | Tidak pakai $ |
| Dapat diubah | Ya | Tidak |
| Scope | Lokal | Global |
| Waktu definisi | Runtime | Compile time |
<?php // Mendefinisikan konstanta dengan define() define("NAMA_APLIKASI", "Sistem Informasi Akademik"); define("VERSI", "2.0.0"); define("TAHUN_PEMBUATAN", 2024); define("PENGEMBANG", "Tim IT Universitas"); define("MAX_LOGIN_ATTEMPT", 3); define("SESSION_TIMEOUT", 3600); // 1 jam dalam detik define("BASE_URL", "http://localhost/siakad/"); define("UPLOAD_PATH", __DIR__ . "/uploads/"); // Mendefinisikan konstanta dengan const (PHP 5.3+) const DATABASE = [ "host" => "localhost", "username" => "root", "password" => "", "database" => "akademik", "port" => 3306, "charset" => "utf8mb4" ]; const APP_SETTINGS = [ "name" => NAMA_APLIKASI, "version" => VERSI, "debug" => true, "timezone" => "Asia/Jakarta", "locale" => "id_ID" ]; // Konstanta untuk role user const ROLE_ADMIN = "admin"; const ROLE_DOSEN = "dosen"; const ROLE_MAHASISWA = "mahasiswa"; const ROLE_TU = "tata_usaha"; // Konstanta untuk status const STATUS_AKTIF = 1; const STATUS_NONAKTIF = 0; const STATUS_DRAFT = 2; const STATUS_PUBLISH = 3; // Menggunakan konstanta echo "<h3>Informasi Aplikasi</h3>"; echo "Nama Aplikasi: " . NAMA_APLIKASI . "<br>"; echo "Versi: " . VERSI . "<br>"; echo "Tahun: " . TAHUN_PEMBUATAN . "<br>"; echo "Pengembang: " . PENGEMBANG . "<br>"; echo "Base URL: " . BASE_URL . "<br>"; echo "Upload Path: " . UPLOAD_PATH . "<br>"; echo "Session Timeout: " . (SESSION_TIMEOUT / 60) . " menit<br>"; echo "<h3>Konfigurasi Database</h3>"; echo "Host: " . DATABASE['host'] . "<br>"; echo "Database: " . DATABASE['database'] . "<br>"; echo "Port: " . DATABASE['port'] . "<br>"; echo "Charset: " . DATABASE['charset'] . "<br>"; echo "<h3>Application Settings</h3>"; echo "Debug Mode: " . (APP_SETTINGS['debug'] ? "Enabled" : "Disabled") . "<br>"; echo "Timezone: " . APP_SETTINGS['timezone'] . "<br>"; echo "Locale: " . APP_SETTINGS['locale'] . "<br>"; // Fungsi untuk mengecek konstanta function checkConstant($name) { if (defined($name)) { echo "Konstanta $name terdefinisi dengan nilai: " . constant($name) . "<br>"; } else { echo "Konstanta $name tidak terdefinisi<br>"; } } echo "<h3>Cek Konstanta</h3>"; checkConstant("NAMA_APLIKASI"); checkConstant("VERSI"); checkConstant("UNDEFINED_CONSTANT"); // Contoh penggunaan dalam aplikasi class Config { private $settings = []; public function __construct() { // Load semua konstanta $this->settings['app'] = APP_SETTINGS; $this->settings['db'] = DATABASE; $this->settings['roles'] = [ ROLE_ADMIN, ROLE_DOSEN, ROLE_MAHASISWA, ROLE_TU ]; } public function get($key) { return $this->settings[$key] ?? null; } public function isDebug() { return APP_SETTINGS['debug']; } } $config = new Config(); echo "<h3>Menggunakan Config Class</h3>"; echo "Debug mode: " . ($config->isDebug() ? "Yes" : "No") . "<br>"; echo "Available roles: " . implode(", ", $config->get('roles')) . "<br>"; ?>
Magic constants adalah konstanta bawaan PHP yang berubah-ubah tergantung di mana mereka digunakan.
| Konstanta | Deskripsi | Contoh |
|---|---|---|
| __LINE__ | Nomor baris saat ini | echo __LINE__; // 15 |
| __FILE__ | Path lengkap file | C:\xampp\htdocs\index.php |
| __DIR__ | Direktori file | C:\xampp\htdocs |
| __FUNCTION__ | Nama fungsi | testFunction |
| __CLASS__ | Nama kelas | MyClass |
| __METHOD__ | Nama method kelas | MyClass::myMethod |
| __NAMESPACE__ | Nama namespace | MyNamespace |
| __TRAIT__ | Nama trait | MyTrait |
<?php namespace University\Academic; echo "<h3>Magic Constants Demonstration</h3>"; // Di scope global echo "<h4>Global Scope</h4>"; echo "File: " . __FILE__ . "<br>"; echo "Directory: " . __DIR__ . "<br>"; echo "Line: " . __LINE__ . "<br>"; echo "Namespace: " . __NAMESPACE__ . "<br>"; // Dalam fungsi function testFunction() { echo "<h4>Dalam Fungsi</h4>"; echo "Nama fungsi: " . __FUNCTION__ . "<br>"; echo "File: " . __FILE__ . "<br>"; echo "Line: " . __LINE__ . "<br>"; echo "Namespace: " . __NAMESPACE__ . "<br>"; } testFunction(); // Dalam class class Student { private $name; private $nim; public function __construct($name, $nim) { $this->name = $name; $this->nim = $nim; echo "<h4>Constructor Class</h4>"; echo "Class: " . __CLASS__ . "<br>"; echo "Method: " . __METHOD__ . "<br>"; echo "File: " . __FILE__ . "<br>"; echo "Line: " . __LINE__ . "<br>"; echo "Namespace: " . __NAMESPACE__ . "<br>"; } public function showInfo() { echo "<h4>Method showInfo</h4>"; echo "Nama: {$this->name}<br>"; echo "NIM: {$this->nim}<br>"; echo "Method saat ini: " . __METHOD__ . "<br>"; echo "Class saat ini: " . __CLASS__ . "<br>"; } public static function getClassInfo() { return [ 'class' => __CLASS__, 'method' => __METHOD__, 'namespace' => __NAMESPACE__, 'file' => __FILE__ ]; } } $student = new Student("Budi Santoso", "2024001"); $student->showInfo(); // Trait trait Loggable { public function log($message) { echo "<h4>Trait Loggable</h4>"; echo "Trait: " . __TRAIT__ . "<br>"; echo "Class menggunakan trait: " . __CLASS__ . "<br>"; echo "Method: " . __METHOD__ . "<br>"; echo "Log: $message<br>"; } } class Course { use Loggable; private $name; public function __construct($name) { $this->name = $name; $this->log("Course {$this->name} created"); } } $course = new Course("Pemrograman PHP"); // Aplikasi praktis untuk logging class Logger { private $logFile; public function __construct($logFile = 'app.log') { $this->logFile = $logFile; } public function write($message, $level = 'INFO') { $logEntry = sprintf( "[%s] [%s] [File: %s, Line: %d, Function: %s] %s\n", date('Y-m-d H:i:s'), $level, __FILE__, __LINE__, __FUNCTION__, $message ); file_put_contents($this->logFile, $logEntry, FILE_APPEND); echo "Log written: " . htmlspecialchars($logEntry) . "<br>"; } } $logger = new Logger(); $logger->write("User login successful", "INFO"); $logger->write("Database connection failed", "ERROR"); // Debug helper function debugInfo() { $backtrace = debug_backtrace(); $caller = $backtrace[0]; echo "<h4>Debug Information</h4>"; echo "File: " . ($caller['file'] ?? __FILE__) . "<br>"; echo "Line: " . ($caller['line'] ?? __LINE__) . "<br>"; echo "Function: " . ($caller['function'] ?? __FUNCTION__) . "<br>"; echo "Class: " . ($caller['class'] ?? 'N/A') . "<br>"; echo "Type: " . ($caller['type'] ?? 'N/A') . "<br>"; } debugInfo(); ?>
| Operator | Nama | Contoh | Hasil |
|---|---|---|---|
| + | Penjumlahan | 5 + 3 | 8 |
| - | Pengurangan | 5 - 3 | 2 |
| * | Perkalian | 5 * 3 | 15 |
| / | Pembagian | 15 / 3 | 5 |
| % | Modulus | 7 % 3 | 1 |
| ** | Pangkat | 2 ** 3 | 8 |
| Operator | Nama | Contoh | Hasil |
|---|---|---|---|
| == | Sama dengan | 5 == "5" | true |
| === | Identik | 5 === "5" | false |
| != | Tidak sama | 5 != 3 | true |
| <> | Tidak sama | 5 <> 3 | true |
| !== | Tidak identik | 5 !== "5" | true |
| > | Lebih besar | 5 > 3 | true |
| < | Lebih kecil | 5 < 3 | false |
| >= | Lebih besar sama | 5 >= 5 | true |
| <= | Lebih kecil sama | 5 <= 3 | false |
| <=> | Spaceship | 5 <=> 3 | 1 |
<?php // 1. Operator Aritmatika $a = 15; $b = 4; echo "<h3>1. Operator Aritmatika</h3>"; echo "\$a = $a, \$b = $b<br>"; echo "\$a + \$b = " . ($a + $b) . "<br>"; echo "\$a - \$b = " . ($a - $b) . "<br>"; echo "\$a * \$b = " . ($a * $b) . "<br>"; echo "\$a / \$b = " . ($a / $b) . "<br>"; echo "\$a % \$b = " . ($a % $b) . "<br>"; echo "\$a ** \$b = " . ($a ** $b) . "<br>"; // 2. Operator Penugasan echo "<h3>2. Operator Penugasan</h3>"; $x = 10; echo "\$x = $x<br>"; $x += 5; echo "\$x += 5 โ $x<br>"; $x -= 3; echo "\$x -= 3 โ $x<br>"; $x *= 2; echo "\$x *= 2 โ $x<br>"; $x /= 4; echo "\$x /= 4 โ $x<br>"; $x %= 3; echo "\$x %= 3 โ $x<br>"; // 3. Operator Perbandingan echo "<h3>3. Operator Perbandingan</h3>"; $c = "15"; echo "\$a = 15 (integer), \$c = '15' (string)<br>"; echo "\$a == \$c : " . (($a == $c) ? 'true' : 'false') . "<br>"; echo "\$a === \$c : " . (($a === $c) ? 'true' : 'false') . "<br>"; echo "\$a != \$c : " . (($a != $c) ? 'true' : 'false') . "<br>"; echo "\$a !== \$c : " . (($a !== $c) ? 'true' : 'false') . "<br>"; echo "\$a > \$b : " . (($a > $b) ? 'true' : 'false') . "<br>"; echo "\$a < \$b : " . (($a < $b) ? 'true' : 'false') . "<br>"; echo "\$a <=> \$b : " . ($a <=> $b) . "<br>"; // 4. Operator Logika echo "<h3>4. Operator Logika</h3>"; $p = true; $q = false; echo "\$p = true, \$q = false<br>"; echo "\$p and \$q : " . (($p and $q) ? 'true' : 'false') . "<br>"; echo "\$p or \$q : " . (($p or $q) ? 'true' : 'false') . "<br>"; echo "\$p && \$q : " . (($p && $q) ? 'true' : 'false') . "<br>"; echo "\$p || \$q : " . (($p || $q) ? 'true' : 'false') . "<br>"; echo "!\$p : " . ((!$p) ? 'true' : 'false') . "<br>"; // 5. Operator Increment/Decrement echo "<h3>5. Operator Increment/Decrement</h3>"; $i = 5; echo "\$i = $i<br>"; echo "\$i++ : " . $i++ . " (post-increment, sekarang \$i = $i)<br>"; echo "++\$i : " . ++$i . " (pre-increment, sekarang \$i = $i)<br>"; echo "\$i-- : " . $i-- . " (post-decrement, sekarang \$i = $i)<br>"; echo "--\$i : " . --$i . " (pre-decrement, sekarang \$i = $i)<br>"; // 6. Operator String echo "<h3>6. Operator String</h3>"; $s1 = "Hello"; $s2 = "World"; echo "\$s1 . \$s2 = " . ($s1 . " " . $s2) . "<br>"; $s1 .= " PHP"; echo "\$s1 .= ' PHP' = $s1<br>"; // 7. Operator Array echo "<h3>7. Operator Array</h3>"; $arr1 = [1, 2, 3]; $arr2 = [3, 4, 5]; $arr3 = $arr1 + $arr2; echo "\$arr1 + \$arr2 = "; print_r($arr3); echo "<br>"; echo "\$arr1 == \$arr2 : " . (($arr1 == $arr2) ? 'true' : 'false') . "<br>"; // 8. Operator Ternary dan Null Coalescing echo "<h3>8. Operator Ternary dan Null Coalescing</h3>"; $nilai = 75; $hasil = $nilai >= 60 ? 'Lulus' : 'Tidak Lulus'; echo "Nilai $nilai: $hasil (ternary)<br>"; $username = $_GET['user'] ?? 'Guest'; echo "Username: $username (null coalescing)<br>"; $data = null; $result = $data ?? 'default' ?? 'fallback'; echo "Data null menjadi: $result<br>"; // 9. Operator Bitwise echo "<h3>9. Operator Bitwise</h3>"; $m = 6; // 110 dalam biner $n = 3; // 011 dalam biner echo "\$m = 6 (110), \$n = 3 (011)<br>"; echo "\$m & \$n = " . ($m & $n) . " (AND)<br>"; echo "\$m | \$n = " . ($m | $n) . " (OR)<br>"; echo "\$m ^ \$n = " . ($m ^ $n) . " (XOR)<br>"; echo "~\$m = " . (~$m) . " (NOT)<br>"; echo "\$m << 1 = " . ($m << 1) . " (shift left)<br>"; echo "\$m >> 1 = " . ($m >> 1) . " (shift right)<br>"; // 10. Operator Eksekusi echo "<h3>10. Operator Eksekusi (backtick)</h3>"; $output = `dir`; // Untuk Windows echo "<pre>" . htmlspecialchars(substr($output, 0, 500)) . "...</pre>"; ?>